ANSI C标准
贡献者:不爱吃窝瓜 浏览:1009次 创建时间:2015-10-30
-
1 ANSI C 标准
2 ANSI C和ISO C的历史
? C89
? C90
? C99
? C11
3 主要编译器的支持
ANSI C 标准
ANSI C是美国国家标准协会(ANSI)对C语言发布的标准。使用C的软件开发者被鼓励遵循ANSI C文档的要求,因为它鼓励使用跨平台的代码。
ANSI C和ISO C的历史
C 的第一个标准是由ANSI发布的。虽然这份文档后来被国际标准化组织(ISO)采纳并且ISO发布的修订版也被ANSI采纳了,但名称ANSI C(而不是 ISO C)仍被广泛使用。一些软件开发者使用ISO C,还有一些使用 Standard C。
C89
1983年,美国国家标准协会组成了一个委员会,X3J11,为了创立 C 的一套标准。经过漫长而艰苦的过程,该标准于1989年完成,并在作为ANSI X3.159-1989 "Programming Language C"正式生效。这个版本的语言经常被称作"ANSI C",或有时称为"C89"(为了区别C99)。
C90
在1990年,ANSI C标准(带有一些小改动)被美国国家标准协会采纳为ISO/IEC 9899:1990。这个版本有时候称为C90。因此,C89和C90通常指同一种语言。
C99
主条目:C99
在2000年三月,ANSI 采纳了 ISO/IEC 9899:1999 标准。这个标准通常指C99。
C11
主条目:C11
在2011年12月,ANSI采纳了ISO/IEC 9899:2011标准。这个标准通常即C11,它是C程序语言的现行标准。
主要编译器的支持
ANSI C现在被几乎所有广泛使用的编译器支持。现在多数C代码是在ANSI C基础上写的。任何仅仅使用标准C并且没有任何硬件依赖假设的代码实际上能保证在任何平台上用遵循C标准的编译器编译成功。如果没有这种预防措施,多数程序只能在一种特定的平台或特定的编译器上编译,例如,使用非标准库,例如图形用户界面库,或者有关编译器或平台特定的特性例如数据类型的确切大小和字节序.
[编辑]选择编译 为了减轻K&R C和ANSI C标准,__STDC__("standard c")宏可以被用来将代码分割为ANSI和K&R部分。
#if __STDC__
externint getopt(int,char*const*,constchar*);
#else
externint getopt();
#endif
上面最好使用"#if __STDC__"而不是"#ifdef __STDC__",因为一些实现可能会把 __STDC__设置为0来表示不遵循ANSI C。"__STDC__"能处理任何没有被宏替换或者值为0的标示符。因而即使宏"__STDC__"没有定义来表示不遵循ANSI C,"__STDC__"仍然能像显示的那样工作。
在上面的例子,一个原型中使用了ANSI实现兼容的函数声明,而另一个使用了过时的非原形声明。它们在C99和C90中依旧是ANSI兼容的,但并不被鼓励使用。
开放分类
参考资料
百度百科
贡献者
本词条在以下词条中被提及:
关于本词条的评论共:(0条)